package com.lvmama.dao.rhino.searchanalysis;

import com.lvmama.pojo.dto.rhino.searchanalysis.*;
import com.lvmama.pojo.entity.rhino.searchanalysis.FlowSearchStation;

import java.util.List;

public interface FlowSearchDao {

    /**
     * 获取查询时间内各渠道的搜索流量（柱状图）
     * @param queryParam
     * @return
     */
    List<FlowSearchStatistics> queryFlowByChannel(SearchStatisticsQuery queryParam);

    /**
     * 获取查询时间内流量趋势（折线图）
     * @param queryParam
     * @return
     */
    List<FlowSearchStatistics> queryFlowByDate(SearchStatisticsQuery queryParam);

    /**
     * 获取站点信息
     * @return
     */
    List<FlowSearchStation> queryStationList();

    /**
     * 获取关键字总pv量
     * @param queryParam
     * @return
     */
    List<FlowSearchKeyType> queryKeyByType(SearchStatisticsQuery queryParam);

    /**
     * 获取关键字的日pv量
     * @param queryParam
     * @return
     */
    List<FlowSearchKeyType> queryKeyByDate(SearchStatisticsQuery queryParam);

    /**
     * 获取关键字点击 各类型在时间段内 某站点 搜索次数  的景点信息
     * @param queryParam
     * @return
     */
    List<FlowSearchKey> queryKeyByAmount(SearchStatisticsQuery queryParam);

    /**
     *  关键字详情（用户所在地区前十）
     * @param queryParam
     * @return
     */
    List<FlowSearchKey> queryDetailByStation(SearchStatisticsQuery queryParam);

    /**
     * 关键字类型分布
     * @param queryParam
     * @return
     */
    List<FlowSearchKey> queryDetailByKey(SearchStatisticsQuery queryParam);

    /**
     * 关键词搜索到达品类分析
     * @param queryParam
     * @return
     */
    List<FlowSearchArrivalKey> queryKeyByCategory(SearchStatisticsQuery queryParam);

    /**
     * 关键字到达品类分析 搜索词
     * @param queryParam
     * @return
     */
    List<FlowSearchArrivalKey> queryKeyByKeyword(SearchStatisticsQuery queryParam);

    /**
     * 关键字到达品类分析 关键词
     * @param queryParam
     * @return
     */
    List<FlowSearchArrivalKey> queryKeyByXgword(SearchStatisticsQuery queryParam);

    /**
     *  跳转分析 切换标签 切换跳转品类统计
     * @param queryParam
     * @return
     */
    List<FlowSearchJump> querySwitchByCategory(SearchStatisticsQuery queryParam);

    /**
     * 跳转分析 切换标签 切换跳转品类趋式
     * @param queryParam
     * @return
     */
    List<FlowSearchJump> querySwitchByDate(SearchStatisticsQuery queryParam);
    /**
     *  跳转分析 默认标签 跳转默认标签品类统计
     * @param queryParam
     * @return
     */
    List<FlowSearchJump> queryJumpByCategory(SearchStatisticsQuery queryParam);
    /**
     * 跳转分析 默认标签 跳转默认品类趋式
     * @param queryParam
     * @return
     */
    List<FlowSearchJump> queryJumpByDate(SearchStatisticsQuery queryParam);

    /**
     * 跳转分析 切换标签 图表详情
     * @param queryParam
     * @return
     */
    List<FlowSearchJump> querySwitchByResult(SearchStatisticsQuery queryParam);
    /**
     * 跳转分析 默认标签 图表详情
     * @param queryParam
     * @return
     */
    List<FlowSearchJump> queryJumpByResult(SearchStatisticsQuery queryParam);
    /**
     * 搜索结果分析 品类搜索无结果统计
     * @param queryParam
     * @return
     */
    List<FlowSearchResult> queryResultByCategory(SearchStatisticsQuery queryParam);
    /**
     * 搜索结果分析 品类搜索无结果趋式
     * @param queryParam
     * @return
     */
    List<FlowSearchResult> queryResultByDate(SearchStatisticsQuery queryParam);

    /**
     * 搜索结果分析 柱状图详情
     * @param queryParam
     * @return
     */
    List<FlowSearchResult> queryResultByKey(SearchStatisticsQuery queryParam);

    /**
     * 筛选分析
     * @param queryParam
     * @return
     */
    List<FlowSearchFilter> queryFilterByCondition(SearchStatisticsQuery queryParam);

    /**
     * 筛选条件的code名称
     * @param query
     * @return
     */
    FlowSearchFilterCondition queryFilterNameByCode(FlowSearchFilterCondition query);

    /**
     * 筛选条件插入表中
     * @param param
     * @return
     */
    boolean  insertFilter(FlowSearchFilterCondition param);

    /**
     * 翻页分析
     * @param queryParam
     * @return
     */
    List<FlowSearchPaging> queryPagingByCategory(SearchStatisticsQuery queryParam);
    /**
     * 翻页分析 翻页数统计
     * @param queryParam
     * @return
     */
    List<FlowSearchPaging> queryPagingByPageCode(SearchStatisticsQuery queryParam);
}